视图赋值
模板赋值
除了系统变量和配置参数输出无需赋值外,其他变量如果需要在模板中输出必须首先进行模板赋值操作,否则会抛出异常,传递数据到模板输出有下面几种方式:
assign方法
在控制器继承了系统的控制器基类的情况下,可以使用assign方法进行模板变量赋值。
namespace index\app\controller;class Index extends \think\Controller{public function index(){// 模板变量赋值$this->assign('name','ThinkPHP');$this->assign('email','thinkphp@qq.com');// 或者批量赋值$this->assign(['name' => 'ThinkPHP','email' => 'thinkphp@qq.com']);// 模板输出return $this->fetch('index');}}
方法传入参数
方法fetch 及 display 均可传入模板变量,例如
namespace app\index\controller;class Index extends \think\Controller{public function index(){return $this->fetch('index', ['name' => 'ThinkPHP','email' => 'thinkphp@qq.com']);}}class Index extends \think\Controller{public function index(){$content = '{$name}-{$email}';return $this->display($content, ['name' => 'ThinkPHP','email' => 'thinkphp@qq.com']);}}
助手函数
如果使用view助手函数渲染输出的话,可以使用下面的方法进行模板变量赋值:
return view('index', ['name' => 'ThinkPHP','email' => 'thinkphp@qq.com']);
或者
return view('index')->assign(['name' => 'ThinkPHP','email' => 'thinkphp@qq.com']);
公共模板变量赋值
如果需要在控制器之外进行模板变量赋值,可以使用视图类的share静态方法进行全局公共模板变量赋值,例如:
use think\facade\View;// 赋值全局模板变量View::share('name','value');// 或者批量赋值View::share(['name1'=>'value','name2'=>'value2']);
全局静态模板变量最终会和前面使用方法赋值的模板变量合并。